package com.owg.jigsaw.hierarchy;

import com.owg.jigsaw.contour.Contour;

public interface TypeNode
{	
	/**Return the key object for this type node. The key object is used to look up the node instance in the {@link TypeHierarchy}.*/
	public Object getKey();
	/**Whether this type node is a supertype of the given node. Under this definition, a node is never its own parent, and null is nobody's child.*/
	public boolean isParentOf(TypeNode n);
	/**Whether this type node is a subtype of the given node. Under this definition, a node is never its own child, and null is nobody's parent.*/
	public boolean isChildOf(TypeNode n);
	/**Get the type node's contour object, which can be used to create a visual representation of a tab or a slot.*/
	public Contour getContour();
	/**Set the node's contour. The application should not call this method.*/
	public void setContour(Contour c);
	/**Whether the node's contour has been assigned. This will be true after the node has been properly initialized.*/
	public boolean hasContour();
}
